Use of computing devices is becoming more ubiquitous by the day. Computing devices range from standard desktop computers to wearable computing technology and beyond. One area of computing devices that has grown in recent years is in the context of image rendering, such as rendering of games, video streams, etc., which typically rely on a graphics processing unit (GPU) to render graphics from a computing device to a display device based on rendering instructions received from the computing device. Typically, an application provides rendering instructions to the GPU via a graphics driver, and a list of GPU commands can be generated, based on the rendering instructions, for execution on the GPU. The timing of executing the GPU commands is not intuitive based on the timing of providing the rendering instructions, and indeed the GPU commands may be generated and/or executed at some time after the rendering instructions are received due to deferred execution of the GPU.
Detecting faults in the GPU, such as timeout detection and recovery (TDR) or other faults, may not be possible based on deferred execution of the GPU commands. For example, occurrence of the GPU fault may cause the GPU to cease executing, reset, etc., and state information may be lost at that time. In addition, deferred execution of the GPU commands may complicate fault detection as faults occurring may not be easily traceable to a previously issued rendering instruction.